/*
 * Clase contenedora de datos de la tabla atributo
*/
package pojos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/** 
 * @author seiloprub
 */
public class Atributo implements Pojo{

    private String atr_valor;
    // claves foraneas
    private int atr_tipo_atributo;
    private int atr_producto;
    
    public Atributo(String atr_valor, int atr_tipo_atributo, int atr_producto){
        this.atr_valor=atr_valor;
        this.atr_tipo_atributo=atr_tipo_atributo;
        this.atr_producto=atr_producto;
    }

    /**
     * @return the valor
     */
    public String getAtr_valor() {
        return atr_valor;
    }

    /**
     * @return the tipo_atributo
     */
    public int getAtr_tipo_atributo() {
        return atr_tipo_atributo;
    }

    /**
     * @return the producto
     */
    public int getAtr_producto() {
        return atr_producto;
    }
    
    /**
     * guarda y actualiza el tipo de atributo
     */
    @Override
    public int guardar(Connection con) {
        int count=0;       
        //Aqui solo se va a insertar, ya que es una relacion M:N            
        String sql="INSERT INTO atributo(atr_valor, atr_tipo_atributo, atr_producto) "
                + "VALUES(?,?,?)";
        PreparedStatement stmt=null;
        try {
            stmt=con.prepareStatement(sql);
            //poner los valores
            stmt.setString(1, this.getAtr_valor());
            stmt.setInt(2, this.atr_tipo_atributo);
            stmt.setInt(3, this.getAtr_producto());
            // ejecutar
            count=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                if (stmt!=null) {
                    stmt.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            }
        }             
        return count;
    }
    
    /**
     * borra el tipo de atributo
     */
    @Override
    public int borrar(Connection con) {
        int count=0;
        String sql="DELETE FROM atributo WHERE atr_tipo_atributo=? "
                + "AND atr_producto=? AND atr_valor=?";
        PreparedStatement stmt=null;
        try {
            stmt=con.prepareStatement(sql);
            //poner los valores
            stmt.setInt(1, this.getAtr_tipo_atributo());
            stmt.setInt(2, this.getAtr_producto());
            stmt.setString(3, this.atr_valor);
            // ejecutar
            count=stmt.executeUpdate();            
        } catch (SQLException ex) {             
            Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {            
            try {
                if(stmt!=null) {
                    stmt.close();
                }                
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } 
        }
        return count;
    }
}
